<?php

namespace App\Admin\Controllers\Financial;

use App\Admin\Models\Financial\FinancialLiabilities;
use App\Admin\Models\SiteStore;
use App\Common\Services\CommonExcelExport;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Admin\Validate\Financial\FinancialLiabilities as ValidateLiabilities;
use Maatwebsite\Excel\Facades\Excel;

class FinancialLiabilitiesController extends Controller
{
    public function dopostadd(Request $request)
    {
        $req_data = $request->only(['date', 'value']);
        $Validate = new ValidateLiabilities('add');
        if (!$Validate->check($req_data)) {
            return response()->json(['code' => '001', 'msg' => $Validate->getError()]);
        }

        if ($req_data['date']) {
            $date = strtotime($req_data['date']);
        } else {
            $date = time();
        }

        $where = [
            'year' => date('Y', $date),
            'month' => date('m', $date),
            'day' => date('d', $date),
        ];
        $data = [
            'value' => $req_data['value'],
            'update_at' => time()
        ];
        FinancialLiabilities::updateOrInsert($where, $data + $where);
        $value = json_decode($req_data['value'], true);
        if ($value['key_30'] != $value['key_53']) {
            $msg = '资产总计和负债和权益者总计不一致';
        } else {
            $msg = '操作成功';
        }
        return response()->json(['code' => '000', 'msg' => $msg]);
    }

    public function getdata(Request $request)
    {
        $req_data = $request->only(['date']);
        $Validate = new ValidateLiabilities('get');
        if (!$Validate->check($req_data)) {
            return response()->json(['code' => '001', 'msg' => $Validate->getError()]);
        }

        if ($req_data['date']) {
            $date = strtotime($req_data['date']);
        } else {
            $date = time();
        }

        $where = [
            'year' => date('Y', $date),
            'month' => date('m', $date),
            'day' => date('d', $date),
        ];

        $this_data = FinancialLiabilities::where($where)->first();
        if ($this_data) {
            $data['this_data'] = json_decode(($this_data->toArray())['value'], true);
        } else {
            $data['this_data'] = [];
        }

        $where = [
            'year' => date('Y', $date) - 1,
            'month' => 12,
            'day' => 31,
        ];
        $last_data = FinancialLiabilities::where($where)->first();
        if ($last_data) {
            $data['last_data'] = json_decode(($last_data->toArray())['value'], true);
        } else {
            $data['last_data'] = [];
        }
        return $data;
    }

    public function getone(Request $request)
    {
        $data = $this->getdata($request);
        return response()->json(['code' => '000', 'msg' => '操作成功', 'data' => $data]);
    }

    public function doexport(Request $request)
    {
        $data = $this->getdata($request);
        $row = [
            ['money' => '资产负债表'],
            [$request->date],
            [
                'money' => '资产',
                'number1' => '行次',
                'this_data1' => '期末金额（公式）（当前1月1日至报表日期）',
                'last_data1' => '年初金额（公式）（上年年末，当年不变）',
                'money2' => '负债和所有者权益',
                'number2' => '行次',
                'this_data2' => '期末金额（公式）',
                'last_data2' => '年初金额（公式）',
            ]];

        $datawith = [
            'A' => '30', 'B' => '5', 'C' => '50', 'D' => '50', 'E' => '40', 'F' => '5', 'G' => '20', 'H' => '20'
        ];

        //9=10+11+12+13
        $this_data_10 = !empty($data['this_data']['key_10']) ? $data['this_data']['key_10'] : 0;
        $this_data_11 = !empty($data['this_data']['key_11']) ? $data['this_data']['key_11'] : 0;
        $this_data_12 = !empty($data['this_data']['key_12']) ? $data['this_data']['key_12'] : 0;
        $this_data_13 = !empty($data['this_data']['key_13']) ? $data['this_data']['key_13'] : 0;
        $this_data_9 = $this_data_10 + $this_data_11 + $this_data_12 + $this_data_13;

        // 41=31+32+33+34+35+36+37+38+39+40
        $this_data_31 = !empty($data['this_data']['key_31']) ? $data['this_data']['key_31'] : 0;
        $this_data_32 = !empty($data['this_data']['key_32']) ? $data['this_data']['key_32'] : 0;
        $this_data_33 = !empty($data['this_data']['key_33']) ? $data['this_data']['key_33'] : 0;
        $this_data_34 = !empty($data['this_data']['key_34']) ? $data['this_data']['key_34'] : 0;
        $this_data_35 = !empty($data['this_data']['key_35']) ? $data['this_data']['key_35'] : 0;
        $this_data_36 = !empty($data['this_data']['key_36']) ? $data['this_data']['key_36'] : 0;
        $this_data_37 = !empty($data['this_data']['key_37']) ? $data['this_data']['key_37'] : 0;
        $this_data_38 = !empty($data['this_data']['key_38']) ? $data['this_data']['key_38'] : 0;
        $this_data_39 = !empty($data['this_data']['key_39']) ? $data['this_data']['key_39'] : 0;
        $this_data_40 = !empty($data['this_data']['key_40']) ? $data['this_data']['key_40'] : 0;
        $this_data_41 = $this_data_31 + $this_data_32 + $this_data_33 + $this_data_34 + $this_data_35 + $this_data_36 + $this_data_37 + $this_data_38 + $this_data_39 + $this_data_40;

        // 15=1+2+3+4+5+6+7+8+9+14
        $this_data_1 = !empty($data['this_data']['key_1']) ? $data['this_data']['key_1'] : 0;
        $this_data_2 = !empty($data['this_data']['key_2']) ? $data['this_data']['key_2'] : 0;
        $this_data_3 = !empty($data['this_data']['key_3']) ? $data['this_data']['key_3'] : 0;
        $this_data_4 = !empty($data['this_data']['key_4']) ? $data['this_data']['key_4'] : 0;
        $this_data_5 = !empty($data['this_data']['key_5']) ? $data['this_data']['key_5'] : 0;
        $this_data_6 = !empty($data['this_data']['key_6']) ? $data['this_data']['key_6'] : 0;
        $this_data_7 = !empty($data['this_data']['key_7']) ? $data['this_data']['key_7'] : 0;
        $this_data_8 = !empty($data['this_data']['key_8']) ? $data['this_data']['key_8'] : 0;
        $this_data_14 = !empty($data['this_data']['key_14']) ? $data['this_data']['key_14'] : 0;
        $this_data_15 = $this_data_1 + $this_data_2 + $this_data_3 + $this_data_4 + $this_data_5 + $this_data_6 + $this_data_7 + $this_data_8 + $this_data_9 + $this_data_14;

        // 46=42+43+44+45
        $this_data_42 = !empty($data['this_data']['key_42']) ? $data['this_data']['key_42'] : 0;
        $this_data_43 = !empty($data['this_data']['key_43']) ? $data['this_data']['key_43'] : 0;
        $this_data_44 = !empty($data['this_data']['key_44']) ? $data['this_data']['key_44'] : 0;
        $this_data_45 = !empty($data['this_data']['key_45']) ? $data['this_data']['key_45'] : 0;
        $this_data_46 = $this_data_42 + $this_data_43 + $this_data_44 + $this_data_45;

        // 47=41+46
        $this_data_47 = $this_data_41 + $this_data_46;

        // 20=18-19
        $this_data_18 = !empty($data['this_data']['key_18']) ? $data['this_data']['key_18'] : 0;
        $this_data_19 = !empty($data['this_data']['key_19']) ? $data['this_data']['key_19'] : 0;
        $this_data_20 = $this_data_18 - $this_data_19;

        // 29=16+17+20+21+22+23+24+25+26+27+28
        $this_data_16 = !empty($data['this_data']['key_16']) ? $data['this_data']['key_16'] : 0;
        $this_data_17 = !empty($data['this_data']['key_17']) ? $data['this_data']['key_17'] : 0;
        $this_data_21 = !empty($data['this_data']['key_21']) ? $data['this_data']['key_21'] : 0;
        $this_data_22 = !empty($data['this_data']['key_22']) ? $data['this_data']['key_22'] : 0;
        $this_data_23 = !empty($data['this_data']['key_23']) ? $data['this_data']['key_23'] : 0;
        $this_data_24 = !empty($data['this_data']['key_24']) ? $data['this_data']['key_24'] : 0;
        $this_data_25 = !empty($data['this_data']['key_25']) ? $data['this_data']['key_25'] : 0;
        $this_data_26 = !empty($data['this_data']['key_26']) ? $data['this_data']['key_26'] : 0;
        $this_data_27 = !empty($data['this_data']['key_27']) ? $data['this_data']['key_27'] : 0;
        $this_data_28 = !empty($data['this_data']['key_28']) ? $data['this_data']['key_28'] : 0;
        $this_data_29 = $this_data_16 + $this_data_17 + $this_data_20 + $this_data_21 + $this_data_22 + $this_data_23 + $this_data_24 + $this_data_25 + $this_data_26 + $this_data_27 + $this_data_28;

        // 30=15+29
        $this_data_30 = $this_data_15 + $this_data_29;

        // 52=48+49+50+51
        $this_data_48 = !empty($data['this_data']['key_48']) ? $data['this_data']['key_48'] : 0;
        $this_data_49 = !empty($data['this_data']['key_49']) ? $data['this_data']['key_49'] : 0;
        $this_data_50 = !empty($data['this_data']['key_50']) ? $data['this_data']['key_50'] : 0;
        $this_data_51 = !empty($data['this_data']['key_51']) ? $data['this_data']['key_51'] : 0;
        $this_data_52 = $this_data_48 + $this_data_49 + $this_data_50 + $this_data_51;

        // 53=47+52
        $this_data_53 = $this_data_47 + $this_data_52;

        $exceldata = [
            [
                'money' => '流动资产：',
                'number1' => '',
                'this_data1' => '',
                'last_data1' => '',
                'money2' => '流动负债：',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '货币资金',
                'number1' => '1',
                'this_data1' => $this_data_1 / 100,
                'last_data1' => !empty($data['last_data']['key_1']) ? $data['last_data']['key_1'] / 100 : 0,
                'money2' => '短期借款',
                'number2' => '31',
                'this_data2' => $this_data_31 / 100,
                'last_data2' => !empty($data['last_data']['key_31']) ? $data['last_data']['key_31'] / 100 : 0,
            ],
            [
                'money' => '短期投资',
                'number1' => '2',
                'this_data1' => $this_data_2 / 100,
                'last_data1' => !empty($data['last_data']['key_2']) ? $data['last_data']['key_2'] / 100 : 0,
                'money2' => '应付票据',
                'number2' => '32',
                'this_data2' => $this_data_32 / 100,
                'last_data2' => !empty($data['last_data']['key_32']) ? $data['last_data']['key_32'] / 100 : 0,
            ],
            [
                'money' => '应收票据',
                'number1' => '3',
                'this_data1' => $this_data_3 / 100,
                'last_data1' => !empty($data['last_data']['key_3']) ? $data['last_data']['key_3'] / 100 : 0,
                'money2' => '应收票据',
                'number2' => '33',
                'this_data2' => $this_data_33 / 100,
                'last_data2' => !empty($data['last_data']['key_33']) ? $data['last_data']['key_33'] / 100 : 0,
            ],
            [
                'money' => '预付账款',
                'number1' => '4',
                'this_data1' => $this_data_4 / 100,
                'last_data1' => !empty($data['last_data']['key_4']) ? $data['last_data']['key_4'] / 100 : 0,
                'money2' => '预收账款',
                'number2' => '34',
                'this_data2' => $this_data_34 / 100,
                'last_data2' => !empty($data['last_data']['key_34']) ? $data['last_data']['key_34'] / 100 : 0,
            ],
            [
                'money' => '预付账款',
                'number1' => '5',
                'this_data1' => $this_data_5 / 100,
                'last_data1' => !empty($data['last_data']['key_5']) ? $data['last_data']['key_5'] / 100 : 0,
                'money2' => '应付职工薪酬',
                'number2' => '35',
                'this_data2' => $this_data_35 / 100,
                'last_data2' => !empty($data['last_data']['key_35']) ? $data['last_data']['key_35'] / 100 : 0,
            ],
            [
                'money' => '应收股利',
                'number1' => '6',
                'this_data1' => $this_data_6 / 100,
                'last_data1' => !empty($data['last_data']['key_6']) ? $data['last_data']['key_6'] / 100 : 0,
                'money2' => '应交税费',
                'number2' => '36',
                'this_data2' => !empty($data['last_data']['key_36']) ? $data['last_data']['key_36'] / 100 : 0,
                'last_data2' => !empty($data['last_data']['key_36']) ? $data['last_data']['key_36'] / 100 : 0,
            ],
            [
                'money' => '应收利息',
                'number1' => '7',
                'this_data1' => $this_data_7 / 100,
                'last_data1' => !empty($data['last_data']['key_7']) ? $data['last_data']['key_7'] / 100 : 0,
                'money2' => '应付利息',
                'number2' => '37',
                'this_data2' => !empty($data['last_data']['key_37']) ? $data['last_data']['key_37'] / 100 : 0,
                'last_data2' => !empty($data['last_data']['key_37']) ? $data['last_data']['key_37'] / 100 : 0,
            ],
            [
                'money' => '其他应收款',
                'number1' => '8',
                'this_data1' => $this_data_8 / 100,
                'last_data1' => !empty($data['last_data']['key_8']) ? $data['last_data']['key_8'] / 100 : 0,
                'money2' => '应付利润',
                'number2' => '38',
                'this_data2' => !empty($data['last_data']['key_38']) ? $data['last_data']['key_38'] / 100 : 0,
                'last_data2' => !empty($data['last_data']['key_38']) ? $data['last_data']['key_38'] / 100 : 0,
            ],
            [
                'money' => '存货',
                'number1' => '9',
                'this_data1' => $this_data_9 / 100,
                'last_data1' => !empty($data['last_data']['key_9']) ? $data['last_data']['key_9'] / 100 : 0,
                'money2' => '其他应付款',
                'number2' => '39',
                'this_data2' => !empty($data['last_data']['key_39']) ? $data['last_data']['key_39'] / 100 : 0,
                'last_data2' => !empty($data['last_data']['key_39']) ? $data['last_data']['key_39'] / 100 : 0,
            ],
            [
                'money' => '其中：原材料',
                'number1' => '10',
                'this_data1' => $this_data_10 / 100,
                'last_data1' => !empty($data['last_data']['key_10']) ? $data['last_data']['key_10'] / 100 : 0,
                'money2' => '其他流动负债',
                'number2' => '40',
                'this_data2' => !empty($data['last_data']['key_40']) ? $data['last_data']['key_40'] / 100 : 0,
                'last_data2' => !empty($data['last_data']['key_40']) ? $data['last_data']['key_40'] / 100 : 0,
            ],
            [
                'money' => '在产品',
                'number1' => '11',
                'this_data1' => $this_data_11 / 100,
                'last_data1' => !empty($data['last_data']['key_11']) ? $data['last_data']['key_11'] / 100 : 0,
                'money2' => '其他流动负债',
                'number2' => '41',
                'this_data2' => $this_data_41 / 100,
                'last_data2' => !empty($data['last_data']['key_41']) ? $data['last_data']['key_41'] / 100 : 0,
            ],
            [
                'money' => '库存商品',
                'number1' => '12',
                'this_data1' => $this_data_12 / 100,
                'last_data1' => !empty($data['last_data']['key_12']) ? $data['last_data']['key_12'] / 100 : 0,
                'money2' => '非流动负债：',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '周转材料',
                'number1' => '13',
                'this_data1' => $this_data_13 / 100,
                'last_data1' => !empty($data['last_data']['key_13']) ? $data['last_data']['key_13'] / 100 : 0,
                'money2' => '长期借款',
                'number2' => '42',
                'this_data2' => $this_data_42 / 100,
                'last_data2' => !empty($data['last_data']['key_42']) ? $data['last_data']['key_42'] / 100 : 0,
            ],
            [
                'money' => '其他流动资产',
                'number1' => '14',
                'this_data1' => $this_data_14 / 100,
                'last_data1' => !empty($data['last_data']['key_14']) ? $data['last_data']['key_14'] / 100 : 0,
                'money2' => '长期应付款',
                'number2' => '43',
                'this_data2' => $this_data_43 / 100,
                'last_data2' => !empty($data['last_data']['key_43']) ? $data['last_data']['key_43'] / 100 : 0,
            ],
            [
                'money' => '流动资产合计',
                'number1' => '15',
                'this_data1' => $this_data_15 / 100,
                'last_data1' => !empty($data['last_data']['key_15']) ? $data['last_data']['key_15'] / 100 : 0,
                'money2' => '递延收益',
                'number2' => '44',
                'this_data2' => $this_data_44 / 100,
                'last_data2' => !empty($data['last_data']['key_44']) ? $data['last_data']['key_44'] / 100 : 0,
            ],
            [
                'money' => '非流动资产：',
                'number1' => '',
                'this_data1' => '',
                'last_data1' => '',
                'money2' => '其他非流动负债',
                'number2' => '45',
                'this_data2' => $this_data_45 / 100,
                'last_data2' => !empty($data['last_data']['key_45']) ? $data['last_data']['key_45'] / 100 : 0,
            ],
            [
                'money' => '长期债券投资',
                'number1' => '16',
                'this_data1' => !empty($data['this_data']['key_16']) ? $data['this_data']['key_16'] / 100 : 0,
                'last_data1' => !empty($data['last_data']['key_16']) ? $data['last_data']['key_16'] / 100 : 0,
                'money2' => '非流动负债合计',
                'number2' => '46',
                'this_data2' => $this_data_46 / 100,
                'last_data2' => !empty($data['last_data']['key_46']) ? $data['last_data']['key_46'] / 100 : 0,
            ],
            [
                'money' => '长期股权投资',
                'number1' => '17',
                'this_data1' => !empty($data['this_data']['key_17']) ? $data['this_data']['key_17'] / 100 : 0,
                'last_data1' => !empty($data['last_data']['key_17']) ? $data['last_data']['key_17'] / 100 : 0,
                'money2' => '负债合计',
                'number2' => '47',
                'this_data2' => $this_data_47 / 100,
                'last_data2' => !empty($data['last_data']['key_47']) ? $data['last_data']['key_47'] / 100 : 0,
            ],
            [
                'money' => '固定资产原价',
                'number1' => '18',
                'this_data1' => $this_data_18 / 100,
                'last_data1' => !empty($data['last_data']['key_18']) ? $data['last_data']['key_18'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '减：累计折旧',
                'number1' => '19',
                'this_data1' => $this_data_19 / 100,
                'last_data1' => !empty($data['last_data']['key_19']) ? $data['last_data']['key_19'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '固定资产账面价值',
                'number1' => '20',
                'this_data1' => $this_data_20 / 100,
                'last_data1' => !empty($data['last_data']['key_20']) ? $data['last_data']['key_20'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '在建工程',
                'number1' => '21',
                'this_data1' => $this_data_21 / 100,
                'last_data1' => !empty($data['last_data']['key_21']) ? $data['last_data']['key_21'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '工程物资',
                'number1' => '22',
                'this_data1' => $this_data_22 / 100,
                'last_data1' => !empty($data['last_data']['key_22']) ? $data['last_data']['key_22'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '固定资产清理',
                'number1' => '23',
                'this_data1' => $this_data_23 / 100,
                'last_data1' => !empty($data['last_data']['key_23']) ? $data['last_data']['key_23'] / 100 : 0,
                'money2' => '',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '生产性生物资产',
                'number1' => '24',
                'this_data1' => $this_data_24 / 100,
                'last_data1' => !empty($data['last_data']['key_24']) ? $data['last_data']['key_24'] / 100 : 0,
                'money2' => '所有者权益（或股东权益）：',
                'number2' => '',
                'this_data2' => '',
                'last_data2' => '',
            ],
            [
                'money' => '无形资产',
                'number1' => '25',
                'this_data1' => $this_data_25 / 100,
                'last_data1' => !empty($data['last_data']['key_25']) ? $data['last_data']['key_25'] / 100 : 0,
                'money2' => '实收资本（或股本）',
                'number2' => '48',
                'this_data2' => $this_data_48 / 100,
                'last_data2' => !empty($data['last_data']['key_48']) ? $data['last_data']['key_48'] / 100 : 0,
            ],
            [
                'money' => '开发支出',
                'number1' => '26',
                'this_data1' => $this_data_26 / 100,
                'last_data1' => !empty($data['last_data']['key_26']) ? $data['last_data']['key_26'] / 100 : 0,
                'money2' => '资本公积',
                'number2' => '49',
                'this_data2' => $this_data_49 / 100,
                'last_data2' => !empty($data['last_data']['key_49']) ? $data['last_data']['key_49'] / 100 : 0,
            ],
            [
                'money' => '长期待摊费用',
                'number1' => '27',
                'this_data1' => $this_data_27 / 100,
                'last_data1' => !empty($data['last_data']['key_27']) ? $data['last_data']['key_27'] / 100 : 0,
                'money2' => '盈余公积',
                'number2' => '50',
                'this_data2' => $this_data_50 / 100,
                'last_data2' => !empty($data['last_data']['key_50']) ? $data['last_data']['key_50'] / 100 : 0,
            ],
            [
                'money' => '其他非流动资产',
                'number1' => '28',
                'this_data1' => $this_data_28 / 100,
                'last_data1' => !empty($data['last_data']['key_28']) ? $data['last_data']['key_28'] / 100 : 0,
                'money2' => '未分配利润',
                'number2' => '51',
                'this_data2' => $this_data_51 / 100,
                'last_data2' => !empty($data['last_data']['key_51']) ? $data['last_data']['key_51'] / 100 : 0,
            ],
            [
                'money' => '非流动资产合计',
                'number1' => '29',
                'this_data1' => $this_data_29 / 100,
                'last_data1' => !empty($data['last_data']['key_29']) ? $data['last_data']['key_29'] / 100 : 0,
                'money2' => '所有者权益（或股东权益）合计',
                'number2' => '52',
                'this_data2' => $this_data_52 / 100,
                'last_data2' => !empty($data['last_data']['key_52']) ? $data['last_data']['key_52'] / 100 : 0,
            ],
            [
                'money' => '资产总计',
                'number1' => '30',
                'this_data1' => $this_data_30 / 100,
                'last_data1' => !empty($data['last_data']['key_30']) ? $data['last_data']['key_30'] / 100 : 0,
                'money2' => '负债和所有者权益（或股东权益）总计',
                'number2' => '53',
                'this_data2' => $this_data_53 / 100,
                'last_data2' => !empty($data['last_data']['key_53']) ? $data['last_data']['key_53'] / 100 : 0,
            ],
        ];
        $filename = '资产负债表导出_' . time() . '.xlsx';
        return Excel::download(new CommonExcelExport($row, $exceldata, $datawith), $filename);
    }
}
